
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2009, Perry L Miller IV
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Exception class.
//
///////////////////////////////////////////////////////////////////////////////

#include "Database/PostgreSQL/Exception.h"

using namespace Database::PostgreSQL;


///////////////////////////////////////////////////////////////////////////////
//
//  Constructor
//
///////////////////////////////////////////////////////////////////////////////

Exception::Exception ( const std::string &id,
                       const std::string &message,
                       Ptr nested,
                       const std::string &sql,
                       const std::string &database, 
                       const std::string &user ) : 
  BaseClass ( id, message, nested ),
  _database ( database ),
  _user ( user ),
  _sql ( sql )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Constructor
//
///////////////////////////////////////////////////////////////////////////////

Exception::Exception ( const std::string &id,
                       const std::string &message,
                       const BaseClass &nested,
                       const std::string &sql,
                       const std::string &database, 
                       const std::string &user ) : 
  BaseClass ( id, message, nested ),
  _database ( database ),
  _user ( user ),
  _sql ( sql )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Constructor
//
///////////////////////////////////////////////////////////////////////////////

Exception::Exception ( const std::string &id,
                       const std::string &message,
                       const std::exception &nested,
                       const std::string &sql,
                       const std::string &database, 
                       const std::string &user ) : 
  BaseClass ( id, message, nested ),
  _database ( database ),
  _user ( user ),
  _sql ( sql )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Copy constructor
//
///////////////////////////////////////////////////////////////////////////////

Exception::Exception ( const Exception &e ) : BaseClass ( e ),
  _database ( e._database ),
  _user ( e._user ),
  _sql ( e._sql )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor
//
///////////////////////////////////////////////////////////////////////////////

Exception::~Exception() throw()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the member.
//
///////////////////////////////////////////////////////////////////////////////

const std::string &Exception::database() const
{
  return _database;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the member.
//
///////////////////////////////////////////////////////////////////////////////

const std::string &Exception::user() const
{
  return _user;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the member.
//
///////////////////////////////////////////////////////////////////////////////

const std::string &Exception::sql() const
{
  return _sql;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Clone this exception.
//
///////////////////////////////////////////////////////////////////////////////

Exception::Ptr Exception::clone() const
{
  return Ptr ( new Exception ( *this ) );
}
